package com.chinamobile.maps.util;

import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.util.PropertyFilter;

/**
 * @ClassName:   JsonUtil
 * @Description: TODO
 * @author:      frankwong
 * @date:        2012-10-21 上午11:42:44
 *
 */
public class JsonUtil {

	public static JsonConfig jsonConfig ;
	
	static{
		jsonConfig = new JsonConfig();
		// 日期字符串转换成java.util.Date或者java.sql.Date
		jsonConfig.registerJsonValueProcessor(java.util.Date.class,
				new JsonDateToStringValueProcessorImpl());
		jsonConfig.registerJsonValueProcessor(java.sql.Date.class,
				new JsonDateToStringValueProcessorImpl());
		// 双向关联时，不会出现循环错误
		jsonConfig.setIgnoreDefaultExcludes(false);
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.NOPROP);
		// CGLIB增强代理的类不要转换成Json，否则会出错
		jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
			public boolean apply(Object source, String name, Object value) {
				if (source.getClass().getName().indexOf("$$EnhancerByCGLIB$$") > 0) {
					return true;
				}
				return false;
			}
		});
	}
}
